The Quick User Datagram Protocol (UDP) Internet Connections protocol, known as QUIC, is a transport layer network protocol that supports connections over UDP. QUIC may be used, e.g., over a cellular network, for various applications, such as for the streaming of content from a server to a client, or for peer-to-peer communication between devices. For a communication session that includes a bidirectional flow of data, such as a peer-to-peer communication session, two QUIC flows are used: one flow for data passed in one direction, and another flow for data passed in the other direction. A QUIC flow may include one or more parallel streams of communication.
Each QUIC packet belonging to a given flow includes, in its encrypted payload, a sequence (“seq”) number and an acknowledgement (“ack”) number. Generally, any QUIC packet that carries data in its payload, referred to herein as a “data packet,” will have its seq number set by the device that sends the packet. Typically, the seq number is incremented for each data packet, such that the seq number corresponds to the serial number of the packet. Thus, for example, assuming that the first data packet communicated from the device has a seq number of 1, the third data packet communicated from the device would have a seq number of 3. The receiving device acknowledges the receipt of any data packets by communicating “acknowledgement packets” to the sender, setting the ack number in each of these packets to the seq number of the data packet that was most recently received. For example, after receiving a data packet having a seq number of 100, the receiving device may send the sender of this data packet an acknowledgement packet having an ack number of 100, indicating that all of the data packets having a seq number equal to or less than 100 were received by the device.
QUIC is described by Iyengar and Swett in “QUIC: A UDP-Based Secure and Reliable Transport for HTTP/2,” published as an Internet Draft by the Internet Engineering Task Force (IETF), 2015, which is incorporated herein by reference. QUIC is used by many common applications, such as Google Chrome, YouTube, and Snapchat.